﻿using System;
using System.Collections.Generic;
using System.Text;

namespace BCDto.Common.BankCardDetection
{
    /// <summary>
    /// 银行卡4元素认证
    /// </summary>
    public class BankCardDetectionDto
    {
        /// <summary>
        /// 银行卡卡号 必选
        /// </summary>
        public string CardNo { get; set; }
        /// <summary>
        /// 身份证号 必选
        /// </summary>
        public string CertNo { get; set; }
        /// <summary>
        /// 姓名 必选
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 手机号 可选
        /// </summary>
        public string Phone { get; set; }

        /// <summary>
        /// 交易流水号 可选（15位以内的数字，用于确保不重复，transDate+seqId，不可重复）
        /// </summary>

        public string SeqId { get; set; }

        /// <summary>
        /// 交易日期 可选（格式YYYYMMDD）
        /// </summary>

        public string TransDate { get; set; }

        /// <summary>
        /// 交易时间 可选（格式：HHMMSS）
        /// </summary>
        public string TransTime { get; set; }

        /// <summary>
        /// 检测结果
        /// </summary>
        public BankCardDetectionResult DetectionResult { get; set; }

    }
    /// <summary>
    /// 银行卡4元素认证返回模型
    /// </summary>
    public class BankCardDetectionResult
    {
        /*
        0000	鉴权成功	
        2302	报文格式错误,无效卡	
        2311	风险受限（黑名单）	
        2314	无效卡号	
        2316	卡状态不正常	
        2319	户名、证件信息或手机号等验证失败	
        2321	您的银行卡暂不支持该业务
        2325	交易失败或银行拒绝交易，请联系发卡行	
        2330	有作弊嫌疑	有作弊嫌疑
        2334	受限制的卡或卡不在白名单中，无法进行交易	
        2344	您的银行卡未预留手机号	
        2345	您的手机未开通无卡支付服务	
        2400	卡状态不正常（睡眠卡/未初始化卡）	
        2401	卡状态不正常(过期卡)	
        2402	卡状态不正常(挂失卡)	
        2403	卡状态不正常(被窃卡)	
        4001	无效卡	
        4003	无效证件号	
        4006	多种要素格式错误	
        5101	该卡交易过于频繁，请稍后重试	
        5102	该证件号交易过于频繁，请稍后重试	
        5103	该卡今日重复验证次数过多，请明日重试	
        5104	该证件号今日重复验证次数过多，请明日重试	
        5105	短期内有同卡重复交易，请稍后重试  
          */

        /// <summary>
        /// 只有当respCode=0000时才为验证通过，否则均为验证失败
        /// </summary>
        public string respCode { get; set; }
        /// <summary>
        /// 返回结果
        /// </summary>
        public string result { get; set; }
        /// <summary>
        /// 信息提示
        /// </summary>
        public string respMsg { get; set; }
    }
}
